Skip to content

[Feature] 멤버 디테일 수정 UI 작업#12

Merged
minneee merged 37 commits intodevelopfrom
feature/member_detail
Aug 14, 2025
Merged

[Feature] 멤버 디테일 수정 UI 작업#12
minneee merged 37 commits intodevelopfrom
feature/member_detail

Conversation

@minneee
Copy link
Collaborator

@minneee minneee commented Aug 13, 2025

✨ 작업 내용

  • 멤버 디테일 뷰의 수정 UI작업 했습니다.

Close Issues 🔒 (닫을 Issue)

Close #No.

Checklist

  • 브랜치를 가져와 작업한 경우 이전 브랜치에 PR을 보냈는지 확인
  • 빌드를 위해 SceneDelegate 수정한 것 PR로 올리지 않았는지 확인
  • 필요없는 주석, 프린트문 제거했는지 확인
  • 컨벤션 지켰는지 확인
  • final, private 제대로 넣었는지 확인
  • 다양한 디바이스에 레이아웃이 대응되는지 확인
    • iPhone SE
    • iPhone 13
    • iPhone 13 Pro Max

@minneee minneee added the 🎨 디자인 UI 디자인 작업 label Aug 13, 2025
@auto-assign auto-assign bot requested a review from Peter1119 August 13, 2025 09:05
@Roy-wonji Roy-wonji self-requested a review August 13, 2025 11:33
Copy link
Contributor

@Roy-wonji Roy-wonji left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@minneee 전반적으로 다 잘 하셨는데요 코멘트 단거랑 다음에는 수정하신걸 deveelopdㅔ 머지 하고 따른 브런치에서 작업 한걸 pr 부탁 드려요

}
}

struct CardStyle: ViewModifier {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@minneee 이건 따로 디자인 시스테 ㅁ폴더에 옮기는 거 어떨까요 ?

var strengths: [String]
var collabStyle: String
var blogURL: String?
var image: String = "person.crop.circle"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@minneee 차후에에는 하나의 데이터로 쓰는 거 어떨까요 swiftdata 에서 받아온 데이터로?

MemberProfileView(profile: MemberProfile())

introductionView(profile: MemberProfile())
IntroductionView(profile: MemberProfile())
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@minneee 좋습니다

MemberProfileView(profile: MemberProfile())

IntroductionView(profile: MemberProfile())
IntroductionView(profile: MemberProfile())
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@minneee 오 좋은거 같아요!

@@ -8,5 +8,23 @@
import SwiftUI

class MemberDetailViewModel: ObservableObject {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@minneee 메크로 를 쓰면 var 로 만 선언 되는거 안시나요?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

어떤걸 말씀하시는건지 모르겠어서,, 어떤건지 다시한번 말씀 부탁드립니다!

Copy link
Collaborator

@Peter1119 Peter1119 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다 ~!

Comment on lines +37 to +62
VStack(spacing: 20) {
MemberProfileView(profile: viewModel.profile)

IntroductionView(isEditing: viewModel.isEditing,
introduction: viewModel.isEditing ?
$viewModel.editingProfile.introduction :
.constant(viewModel.profile.introduction))

StrengthsView(isEditing: viewModel.isEditing,
strengths: viewModel.isEditing ?
$viewModel.editingProfile.strengths :
.constant(viewModel.profile.strengths))

CollabStyleView(isEditing: viewModel.isEditing,
collabStyle: viewModel.isEditing ?
$viewModel.editingProfile.collabStyle :
.constant(viewModel.profile.collabStyle))

BlogView(isEditing: viewModel.isEditing,
blogURL: viewModel.isEditing ?
$viewModel.editingProfile.blogURL :
.constant(viewModel.profile.blogURL))
}
.padding(.horizontal, 16)
.padding(.bottom, 80)
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

말씀을 드리고 나서 정리가 되었는데
가장 큰건 책임이 분산되어있어서 그런 것 같아요

지금은 수정에 대한 로직을 자식 뷰들이 담당하고 있는데
자식 뷰들은 지금 수정할거고 수정된 텍스트는 이거야 라는 것만 알려주고
그 이후 수정에 대한 로직은 뷰모델에게 책임을 넘겨주면 좋을 것 같고

아니라면
지금 동일한 뷰를 사용해서 isEditig에 따라서 분기처리 되면서 뷰가 그려지고 로직이 생기는데
StrengthsDisplayView StrengthsEditView 이렇게 나눈다면 좀더 깔끔하게 되지 않을까 싶습니다 ~!

if viewModel.isEditing {
    StrengthsEditView(strengths: $viewModel.editingProfile.strengths)
} else {
    StrengthsDisplayView(strengths: viewModel.profile.strengths)
}

수정로직도 바뀔 수 있다고 생각하는게
변경사항이 있는건 viewmodel에서 감지할 수 있다고 생각해요
그랬을 경우 뒤로가기를 누르면 임시 저장된 데이터는 날리고
저장버튼을 누르면 실제 로컬 데이터를 update하고 다시 불러오는 식으로 하면
흐름이 좋아지지 않을까 싶습니다 !

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

넵 알겠습니다!
그런데 수정로직 부분은 지금 profile이랑 editingProfile로 나누어서
수정사항은 editingProfile에 임시저장하고 취소하면 임시저장 데이터 날리고 저장하면 실제 사용하는 데이터profile에 저장하게 되어있어서
말씀해주신 흐름이랑 같은 흐름 같은데 혹시 다른 부분이 있다면 다시 한번 말씀 부탁드립니다!!

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아 넵 ! 지금 수정이 필요하다기 보단 나중에 이런 것도 좋을 것 같다는 말씀이었습니다!

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

네넵! 말씀 듣고나니까 뷰가 너무 복잡한거같아서 컴포넌트뷰를 Edit파일, Display파일 나누어서 수정해두었습니다!

@minneee minneee merged commit 205b743 into develop Aug 14, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🎨 디자인 UI 디자인 작업

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants